﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--
 * FCKeditor - The text editor for Internet - http://www.fckeditor.net
 * Copyright (C) 2003-2007 Frederico Caldeira Knabben
 *
 * == BEGIN LICENSE ==
 *
 * Licensed under the terms of any of the following licenses at your
 * choice:
 *
 *  - GNU General Public License Version 2 or later (the "GPL")
 *    http://www.gnu.org/licenses/gpl.html
 *
 *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
 *    http://www.gnu.org/licenses/lgpl.html
 *
 *  - Mozilla Public License Version 1.1 or later (the "MPL")
 *    http://www.mozilla.org/MPL/MPL-1.1.html
 *
 * == END LICENSE ==
 *
 * Main page that holds the editor.
-->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<title>FCKeditor</title>
	<meta name="robots" content="noindex, nofollow" />
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<meta http-equiv="Cache-Control" content="public" />
	<script type="text/javascript" defer="defer">
	
Function.prototype.bind = function(object){
	var __method = this;
	return function(){
		__method.apply(object, arguments)
	}
}

var ScriptLoader = {};
ScriptLoader.isLoading = false ;
ScriptLoader.queue = new Array();
ScriptLoader.Load = function(src,handler)
{
	var queue = new Object();
	queue.src = src;
	queue.handler = handler;
	this.queue.push(queue);
	if (!this.isLoading)
	{
		this.CheckQueue()
	}
}
ScriptLoader.CheckQueue = function() 
{
	if ( this.queue.length > 0 )
	{
		this.isLoading = true ;
		this.LoadFile(this.queue.shift())
	}
	else
	{
		this.isLoading = false
	}
}
ScriptLoader.LoadFile = function( queue ) 
{
	var e ;
	if ( queue.src.lastIndexOf('.css') > 0 )
	{
		e = document.createElement('link');
		e.rel = "stylesheet";
		e.type = "text/css";
		if(!window.isIE)
		{
			setTimeout(function(){
				ScriptLoader.CheckQueue();
				if(this.handler) {
					this.handler()
				}
			}.bind(e),1);
		}
	}
	else
	{
		e = document.createElement( "script" );
		e.type = "text/javascript";
		e.handler = queue.handler;
	}
	e.onload = e.onreadystatechange = function() {
		if (!this.readyState || this.readyState == "complete" || this.readyState == 'loaded' )
		{
			if(this.handler) {
				this.handler();
				this.handler = null;
			}
			ScriptLoader.CheckQueue()
		}
	};
	e.href = e.src = queue.src;
	document.getElementsByTagName("head")[0].appendChild( e );
}

// Instead of loading scripts and CSSs using inline tags, all scripts are
// loaded by code. In this way we can guarantee the correct processing order,
// otherwise external scripts and inline scripts could be executed in an
// unwanted order (IE).

function LoadScript( url )
{
	document.write( '<scr' + 'ipt type="text/javascript" src="' + url + '" onerror="alert(\'Error loading \' + this.src);"><\/scr' + 'ipt>' ) ;
}

function LoadCss( url )
{
	document.write( '<link href="' + url + '" type="text/css" rel="stylesheet" onerror="alert(\'Error loading \' + this.src);" />' ) ;
}

// Main editor scripts.
var sSuffix = ( /*@cc_on!@*/false ) ? 'ie' : 'gecko' ;

ScriptLoader.Load( 'js/fckeditorcode_' + sSuffix + '.js', step1);
//LoadScript( 'js/fckeditorcode_' + sSuffix + '.js' ) ;

function step1() {
    ScriptLoader.Load(  '../fckconfig.js', step2);
}
// Base configuration file.
//LoadScript( '../fckconfig.js' ) ;

function step2() {
    if ( FCKBrowserInfo.IsIE )
    {
	    // Remove IE mouse flickering.
	    try
	    {
		    document.execCommand( 'BackgroundImageCache', false, true ) ;
	    }
	    catch (e)
	    {
		    // We have been reported about loading problems caused by the above
		    // line. For safety, let's just ignore errors.
	    }

	    // Create the default cleanup object used by the editor.
	    FCK.IECleanup = new FCKIECleanup( window ) ;
	    FCK.IECleanup.AddItem( FCKTempBin, FCKTempBin.Reset ) ;
	    FCK.IECleanup.AddItem( FCK, FCK_Cleanup ) ;
    }

    // The config hidden field is processed immediately, because
    // CustomConfigurationsPath may be set in the page.
    FCKConfig.ProcessHiddenField() ;

    // Load the custom configurations file (if defined).
    if ( FCKConfig.CustomConfigurationsPath.length > 0 )
	    ScriptLoader.Load( FCKConfig.CustomConfigurationsPath, step3 ) ;
	else
	    step3();
}

function step3() {
    // Load configurations defined at page level.
    FCKConfig_LoadPageConfig() ;

    FCKConfig_PreProcess() ;

    // Load the active skin CSS.
    ScriptLoader.Load( FCKConfig.SkinPath + 'fck_editor.css' ) ;

    // Load the language file.
    FCKLanguageManager.Initialize() ;
    ScriptLoader.Load( 'lang/' + FCKLanguageManager.ActiveLanguage.Code + '.js', step4 ) ;

}

function step4() {
// Initialize the editing area context menu.
    FCK_ContextMenu_Init() ;

    FCKPlugins.Load() ;

    // Set the editor interface direction.
    window.document.dir = FCKLang.Dir ;

    // Activate pasting operations.
    if ( FCKConfig.ForcePasteAsPlainText || FCKConfig.AutoDetectPasteFromWord )
	    FCK.Events.AttachEvent( 'OnPaste', FCK.Paste ) ;
	
	if ( FCKBrowserInfo.IsGecko )
    {
	    window.onresize = Window_OnResize ;
    }
    
    InitializeAPI() ;

	if ( FCKBrowserInfo.IsIE )
		FCK_PreloadImages() ;
	else
		LoadToolbarSetup() ;
}

function Window_OnResize()
{
	if ( FCKBrowserInfo.IsOpera )
		return ;

	var oCell = document.getElementById( 'xEditingArea' ) ;

	var eInnerElement = oCell.firstChild ;
	if ( eInnerElement )
	{
		eInnerElement.style.height = 0 ;
		eInnerElement.style.height = oCell.scrollHeight - 2 ;
	}
}

function LoadToolbarSetup()
{
	FCKeditorAPI._FunctionQueue.Add( LoadToolbar ) ;
}

function LoadToolbar()
{
	var oToolbarSet = FCK.ToolbarSet = FCKToolbarSet_Create() ;

	if ( oToolbarSet.IsLoaded )
		StartEditor() ;
	else
	{
		oToolbarSet.OnLoad = StartEditor ;
		oToolbarSet.Load( FCKURLParams['Toolbar'] || 'Default' ) ;
	}
}

function StartEditor()
{
	// Remove the onload listener.
	FCK.ToolbarSet.OnLoad = null ;

	FCKeditorAPI._FunctionQueue.Remove( LoadToolbar ) ;

	FCK.Events.AttachEvent( 'OnStatusChange', WaitForActive ) ;

	// Start the editor.
	FCK.StartEditor() ;
}

function WaitForActive( editorInstance, newStatus )
{
	if ( newStatus == FCK_STATUS_ACTIVE )
	{
		if ( FCKBrowserInfo.IsGecko )
			FCKTools.RunFunction( window.onresize ) ;

		_AttachFormSubmitToAPI() ;

		FCK.SetStatus( FCK_STATUS_COMPLETE ) ;

		// Call the special "FCKeditor_OnComplete" function that should be present in
		// the HTML page where the editor is located.
		if ( typeof( window.parent.FCKeditor_OnComplete ) == 'function' )
			window.parent.FCKeditor_OnComplete( FCK ) ;
	}
}

// Gecko browsers doens't calculate well that IFRAME size so we must
// recalculate it every time the window size changes.

	</script>
</head>
<body>
	<table width="100%" cellpadding="0" cellspacing="0" style="height: 100%; table-layout: fixed">
		<tr id="xToolbarRow" style="display: none">
			<td id="xToolbarSpace" style="overflow: hidden">
				<table width="100%" cellpadding="0" cellspacing="0">
					<tr id="xCollapsed" style="display: none">
						<td id="xExpandHandle" class="TB_Expand" colspan="3">
							<img class="TB_ExpandImg" alt="" src="images/spacer.gif" width="8" height="4" /></td>
					</tr>
					<tr id="xExpanded" style="display: none">
						<td id="xTBLeftBorder" class="TB_SideBorder" style="width: 1px; display: none;"></td>
						<td id="xCollapseHandle" style="display: none" class="TB_Collapse" valign="bottom">
							<img class="TB_CollapseImg" alt="" src="images/spacer.gif" width="8" height="4" /></td>
						<td id="xToolbar" class="TB_ToolbarSet"></td>
						<td class="TB_SideBorder" style="width: 1px"></td>
					</tr>
				</table>
			</td>
		</tr>
		<tr>
			<td id="xEditingArea" valign="top" style="height: 100%"></td>
		</tr>
	</table>
</body>
</html>

